home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Extra 1997 #1 / Amiga Plus Extra 1997 #1.iso / programme / tools / leoutils / fakecpu.c < prev    next >
C/C++ Source or Header  |  1994-04-26  |  3KB  |  92 lines

  1. /* Kone ottaa selville tietokoneen mikroprosessorin tyypin ja tulostaa sen. */
  2. /* Pyydettäessä ohjelma myös muuttaa koneen tyypin kertovaa systeemi-        */
  3. /* struktuuria.                                                                */
  4.  
  5. #include <string.h>
  6. #include <exec/exec.h>
  7. #ifdef __SASC
  8. #include <proto/dos.h>
  9. #else
  10. #include <clib/dos_protos.h>
  11. #endif
  12.  
  13. static char *Ver = "$VER:FakeCPU 1.0 " __AMIGADATE__;
  14.  
  15. UBYTE CPUType, *FPUType;
  16. extern struct ExecBase *SysBase;
  17.  
  18. int main(int argc, char **argv) {
  19.     int i;
  20.  
  21.     Printf("\nExecBase = %08lx\n", SysBase);
  22.  
  23.     Printf("The version of exec.library = %2ld.%-2ld\n",
  24.         (LONG) (SysBase -> LibNode.lib_Version), (LONG) (SysBase -> LibNode.lib_Revision));
  25.  
  26.     if (SysBase->AttnFlags & AFF_68040) CPUType = 4;
  27.     else if (SysBase->AttnFlags & AFF_68030) CPUType = 3;
  28.     else if (SysBase->AttnFlags & AFF_68020) CPUType = 2;
  29.     else if (SysBase->AttnFlags & AFF_68010) CPUType = 1;
  30.     else CPUType = 0;
  31.  
  32.     if (SysBase->AttnFlags & AFF_FPU40)
  33.         if (SysBase->AttnFlags & (AFF_68882 | AFF_68881)) {
  34.             FPUType = "FPU040 + 68882 emulating software";
  35.         } else {
  36.             FPUType = "FPU040, no 68882 emulation software";
  37.         }
  38.     else if (SysBase->AttnFlags & AFF_68882) FPUType = "68882";
  39.     else if (SysBase->AttnFlags & AFF_68881) FPUType = "68881";
  40.     else FPUType = "NONE";
  41.  
  42.     Printf("Your CPU: 680%ld0, FPU: %s\n\n", (LONG) CPUType, FPUType);
  43.  
  44.     for (i=1; i<argc; i++) {
  45.         if (!strcmp(argv[i],"NOFPU") || !(strcmp(argv[i],"nofpu"))) {
  46.             SysBase->AttnFlags &= ~(AFF_68881 | AFF_68882 | AFF_FPU40);
  47.             Printf("FPU marked offline\n\n");
  48.         } else if (!strcmp(argv[i],"68881")) {
  49.             SysBase->AttnFlags &= ~(AFF_68882 | AFF_FPU40);
  50.             SysBase->AttnFlags |= (AFF_68881);
  51.             Printf("FPU marked as 68881\n\n");
  52.         } else if (!strcmp(argv[i],"68882")) {
  53.             SysBase->AttnFlags &= ~(AFF_FPU40);
  54.             SysBase->AttnFlags |= (AFF_68881 | AFF_68882);
  55.             Printf("FPU marked as 68882\n\n");
  56.         } else if (!strcmp(argv[i],"FPU040") || !strcmp(argv[i],"fpu040")) {
  57.             SysBase->AttnFlags &= ~(AFF_68881 | AFF_68882);
  58.             SysBase->AttnFlags |= (AFF_FPU40);
  59.             Printf("FPU marked as FPU040 without 68882 emulating software\n\n");
  60.         } else if (!strcmp(argv[i],"FPU040+882") || !strcmp(argv[i],"fpu040+882")) {
  61.             SysBase->AttnFlags |= (AFF_68881 | AFF_68882 | AFF_FPU40);
  62.             Printf("FPU marked as FPU040 with 68882 emulating software\n\n");
  63.         } else if (!strcmp(argv[i],"68000")) {
  64.             SysBase->AttnFlags &= ~(AFF_68010 | AFF_68020 | AFF_68030 | AFF_68040);
  65.             Printf("CPU marked as 68000\n\n");
  66.         } else if (!strcmp(argv[i],"68010")) {
  67.             SysBase->AttnFlags &= ~(AFF_68020 | AFF_68030 | AFF_68040);
  68.             SysBase->AttnFlags |= (AFF_68010);
  69.             Printf("CPU marked as 68010\n\n");
  70.         } else if (!strcmp(argv[i],"68020")) {
  71.             SysBase->AttnFlags &= ~(AFF_68030 | AFF_68040);
  72.             SysBase->AttnFlags |= (AFF_68010 | AFF_68020);
  73.             Printf("CPU marked as 68020\n\n");
  74.         } else if (!strcmp(argv[i],"68030")) {
  75.             SysBase->AttnFlags &= ~(AFF_68040);
  76.             SysBase->AttnFlags |= (AFF_68010 | AFF_68020 | AFF_68030);
  77.             Printf("CPU marked as 68030\n\n");
  78.         } else if (!strcmp(argv[i],"68040")) {
  79.             SysBase->AttnFlags |= (AFF_68010 | AFF_68020 | AFF_68030 | AFF_68040);
  80.             Printf("CPU marked as 68040\n\n");
  81.         } else {
  82.             if (strcmp(argv[i],"?") && (strcmp(argv[i],"-h"))) {
  83.                 Printf("*** ERROR: %s is not a valid option!\n\n", argv[i]);
  84.             }
  85.             Printf("FakeCPU 1.0, ©1994 Leopold-Soft\n"
  86.                     "Usage: %s [NOFPU 68881 68882 FPU040 FPU040+882 680x0]\n\n",argv[0]); 
  87.         }
  88.     }
  89.  
  90.     return 0;
  91. }
  92.